/**
	* Copyright (c) minuteproject, minuteproject@gmail.com
	* All rights reserved.
	* 
	* Licensed under the Apache License, Version 2.0 (the "License")
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	* 
	* http://www.apache.org/licenses/LICENSE-2.0
	* 
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	* 
	* More information on minuteproject:
	* twitter @minuteproject
	* wiki http://minuteproject.wikispaces.com 
	* blog http://minuteproject.blogspot.net
	* 
*/
/**
	* template reference : 
	* - name : OpenxavaDomainObjectUML
	* - file name : DomainObjectUMLJPAAnnotationOXAnnotationV4.vm
*/
package sistema_oficial.sistema_oficial.domain.sistemaoficial;

//MP-MANAGED-ADDED-AREA-BEGINNING @import@
//MP-MANAGED-ADDED-AREA-ENDING @import@
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import org.openxava.annotations.*;

import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpacadoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpacadoNivel4;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpaqueNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoMpNivel2;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoNivel0;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoNivel1;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoProductoNivel2;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoProductoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.SubcuentaMayor;

/**
 *
 * <p>Title: Motivo</p>
 *
 * <p>Description: Domain Object describing a Motivo entity</p>
 *
 */
@Entity (name="Motivo")
@Table (name="motivo")
@Views({
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-base-motivo@
	@View(
		name="base",
		members=
        "" 	
        + "identificador  ; "
        + "descripcion  ; "
        + "subcuentaMayorCodigo  ; "
		),
//MP-MANAGED-UPDATABLE-ENDING
	@View(
		name="Create", 
		extendsView="base"
	),
	@View(
		name="Update", 
		extendsView="base",
        members=
          "" 	
	    + "saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador { saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador };" 
	    + "saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador { saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador };" 
	    + "saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador { saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador };" 
	    + "saleForzadoMpNivel2MotivoViaMotivoIdentificador { saleForzadoMpNivel2MotivoViaMotivoIdentificador };" 
	    + "saleForzadoNivel0MotivoViaMotivoIdentificador { saleForzadoNivel0MotivoViaMotivoIdentificador };" 
	    + "saleForzadoNivel1MotivoViaMotivoIdentificador { saleForzadoNivel1MotivoViaMotivoIdentificador };" 
	    + "saleForzadoProductoNivel2MotivoViaMotivoIdentificador { saleForzadoProductoNivel2MotivoViaMotivoIdentificador };" 
	    + "saleForzadoProductoNivel3MotivoViaMotivoIdentificador { saleForzadoProductoNivel3MotivoViaMotivoIdentificador };" 
	),
	@View(extendsView="base",
        members=
          "" 	
	    + "saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador { saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador };" 
	    + "saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador { saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador };" 
	    + "saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador { saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador };" 
	    + "saleForzadoMpNivel2MotivoViaMotivoIdentificador { saleForzadoMpNivel2MotivoViaMotivoIdentificador };" 
	    + "saleForzadoNivel0MotivoViaMotivoIdentificador { saleForzadoNivel0MotivoViaMotivoIdentificador };" 
	    + "saleForzadoNivel1MotivoViaMotivoIdentificador { saleForzadoNivel1MotivoViaMotivoIdentificador };" 
	    + "saleForzadoProductoNivel2MotivoViaMotivoIdentificador { saleForzadoProductoNivel2MotivoViaMotivoIdentificador };" 
	    + "saleForzadoProductoNivel3MotivoViaMotivoIdentificador { saleForzadoProductoNivel3MotivoViaMotivoIdentificador };" 
	),
    @View(name="motivoDEFAULT_VIEW", 
	   members=
          " identificador ;" 	
        + "descripcion  ; "
	),
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-reference-motivo@
    @View(name="reference", 
       extendsView="motivoDEFAULT_VIEW"
//MP-MANAGED-UPDATABLE-ENDING
    )
})

@Tabs({
@Tab(
properties=
     " descripcion "
)
,
@Tab(
name = "MotivoTab",
properties=
     " descripcion "
)
,
@Tab(
name = "MotivoTabWithRef",
properties=
     " descripcion "
)
})
//MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @class-annotation@
public class Motivo {

    @Hidden @Id @Column(name="identificador" )
    private Integer identificador; 

//MP-MANAGED-ADDED-AREA-BEGINNING @descripcion-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @descripcion-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-descripcion@
    @Column(name="descripcion",  length=100, nullable=false,  unique=false)
    @Required
    private String descripcion;	
//MP-MANAGED-UPDATABLE-ENDING


//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-SubcuentaMayor-motivo@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="subcuenta_mayor_codigo", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private SubcuentaMayor subcuentaMayorCodigo; 
    
//MP-MANAGED-UPDATABLE-ENDING
//children
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpacadoNivel3.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoEmpacadoNivel3> saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpacadoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpacadoNivel4.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoEmpacadoNivel4> saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpacadoNivel4>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoEmpaqueNivel3.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoEmpaqueNivel3> saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpaqueNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoMpNivel2MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoMpNivel2.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoMpNivel2> saleForzadoMpNivel2MotivoViaMotivoIdentificador = new HashSet<SaleForzadoMpNivel2>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoNivel0MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoNivel0.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoNivel0> saleForzadoNivel0MotivoViaMotivoIdentificador = new HashSet<SaleForzadoNivel0>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoNivel1MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoNivel1.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoNivel1> saleForzadoNivel1MotivoViaMotivoIdentificador = new HashSet<SaleForzadoNivel1>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoProductoNivel2MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoProductoNivel2.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoProductoNivel2> saleForzadoProductoNivel2MotivoViaMotivoIdentificador = new HashSet<SaleForzadoProductoNivel2>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-saleForzadoProductoNivel3MotivoViaMotivoIdentificador-motivo@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.SaleForzadoProductoNivel3.class, fetch=FetchType.LAZY, mappedBy="motivoIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <SaleForzadoProductoNivel3> saleForzadoProductoNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoProductoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//m2m
    /**
    * Default constructor
    */
    public Motivo() {
    }


    public Integer getIdentificador() {
        return identificador;
    }
	
    public void setIdentificador (Integer identificador) {
        this.identificador =  identificador;
    }
    

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-descripcion@
    public String getDescripcion() {
        return descripcion;
    }
	
    public void setDescripcion (String descripcion) {
        this.descripcion =  descripcion;
    } 
//MP-MANAGED-UPDATABLE-ENDING


    public SubcuentaMayor getSubcuentaMayorCodigo () {  //
    	return subcuentaMayorCodigo;
    }
	
    public void setSubcuentaMayorCodigo (SubcuentaMayor subcuentaMayorCodigo) {
    	this.subcuentaMayorCodigo = subcuentaMayorCodigo;//this.subcuentaMayorCodigo = subcuentaMayor;
    }

    public Set<SaleForzadoEmpacadoNivel3> getSaleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador() {
        if (saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador == null){
            saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpacadoNivel3>();
        }
        return saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador (Set<SaleForzadoEmpacadoNivel3> saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador) {
        this.saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador = saleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador (SaleForzadoEmpacadoNivel3 saleForzadoEmpacadoNivel3) {
    	    getSaleForzadoEmpacadoNivel3MotivoViaMotivoIdentificador().add(saleForzadoEmpacadoNivel3);
    }
    
    public Set<SaleForzadoEmpacadoNivel4> getSaleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador() {
        if (saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador == null){
            saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpacadoNivel4>();
        }
        return saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador (Set<SaleForzadoEmpacadoNivel4> saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador) {
        this.saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador = saleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador (SaleForzadoEmpacadoNivel4 saleForzadoEmpacadoNivel4) {
    	    getSaleForzadoEmpacadoNivel4MotivoViaMotivoIdentificador().add(saleForzadoEmpacadoNivel4);
    }
    
    public Set<SaleForzadoEmpaqueNivel3> getSaleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador() {
        if (saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador == null){
            saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoEmpaqueNivel3>();
        }
        return saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador (Set<SaleForzadoEmpaqueNivel3> saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador) {
        this.saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador = saleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador (SaleForzadoEmpaqueNivel3 saleForzadoEmpaqueNivel3) {
    	    getSaleForzadoEmpaqueNivel3MotivoViaMotivoIdentificador().add(saleForzadoEmpaqueNivel3);
    }
    
    public Set<SaleForzadoMpNivel2> getSaleForzadoMpNivel2MotivoViaMotivoIdentificador() {
        if (saleForzadoMpNivel2MotivoViaMotivoIdentificador == null){
            saleForzadoMpNivel2MotivoViaMotivoIdentificador = new HashSet<SaleForzadoMpNivel2>();
        }
        return saleForzadoMpNivel2MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoMpNivel2MotivoViaMotivoIdentificador (Set<SaleForzadoMpNivel2> saleForzadoMpNivel2MotivoViaMotivoIdentificador) {
        this.saleForzadoMpNivel2MotivoViaMotivoIdentificador = saleForzadoMpNivel2MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoMpNivel2MotivoViaMotivoIdentificador (SaleForzadoMpNivel2 saleForzadoMpNivel2) {
    	    getSaleForzadoMpNivel2MotivoViaMotivoIdentificador().add(saleForzadoMpNivel2);
    }
    
    public Set<SaleForzadoNivel0> getSaleForzadoNivel0MotivoViaMotivoIdentificador() {
        if (saleForzadoNivel0MotivoViaMotivoIdentificador == null){
            saleForzadoNivel0MotivoViaMotivoIdentificador = new HashSet<SaleForzadoNivel0>();
        }
        return saleForzadoNivel0MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoNivel0MotivoViaMotivoIdentificador (Set<SaleForzadoNivel0> saleForzadoNivel0MotivoViaMotivoIdentificador) {
        this.saleForzadoNivel0MotivoViaMotivoIdentificador = saleForzadoNivel0MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoNivel0MotivoViaMotivoIdentificador (SaleForzadoNivel0 saleForzadoNivel0) {
    	    getSaleForzadoNivel0MotivoViaMotivoIdentificador().add(saleForzadoNivel0);
    }
    
    public Set<SaleForzadoNivel1> getSaleForzadoNivel1MotivoViaMotivoIdentificador() {
        if (saleForzadoNivel1MotivoViaMotivoIdentificador == null){
            saleForzadoNivel1MotivoViaMotivoIdentificador = new HashSet<SaleForzadoNivel1>();
        }
        return saleForzadoNivel1MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoNivel1MotivoViaMotivoIdentificador (Set<SaleForzadoNivel1> saleForzadoNivel1MotivoViaMotivoIdentificador) {
        this.saleForzadoNivel1MotivoViaMotivoIdentificador = saleForzadoNivel1MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoNivel1MotivoViaMotivoIdentificador (SaleForzadoNivel1 saleForzadoNivel1) {
    	    getSaleForzadoNivel1MotivoViaMotivoIdentificador().add(saleForzadoNivel1);
    }
    
    public Set<SaleForzadoProductoNivel2> getSaleForzadoProductoNivel2MotivoViaMotivoIdentificador() {
        if (saleForzadoProductoNivel2MotivoViaMotivoIdentificador == null){
            saleForzadoProductoNivel2MotivoViaMotivoIdentificador = new HashSet<SaleForzadoProductoNivel2>();
        }
        return saleForzadoProductoNivel2MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoProductoNivel2MotivoViaMotivoIdentificador (Set<SaleForzadoProductoNivel2> saleForzadoProductoNivel2MotivoViaMotivoIdentificador) {
        this.saleForzadoProductoNivel2MotivoViaMotivoIdentificador = saleForzadoProductoNivel2MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoProductoNivel2MotivoViaMotivoIdentificador (SaleForzadoProductoNivel2 saleForzadoProductoNivel2) {
    	    getSaleForzadoProductoNivel2MotivoViaMotivoIdentificador().add(saleForzadoProductoNivel2);
    }
    
    public Set<SaleForzadoProductoNivel3> getSaleForzadoProductoNivel3MotivoViaMotivoIdentificador() {
        if (saleForzadoProductoNivel3MotivoViaMotivoIdentificador == null){
            saleForzadoProductoNivel3MotivoViaMotivoIdentificador = new HashSet<SaleForzadoProductoNivel3>();
        }
        return saleForzadoProductoNivel3MotivoViaMotivoIdentificador;
    }

    public void setSaleForzadoProductoNivel3MotivoViaMotivoIdentificador (Set<SaleForzadoProductoNivel3> saleForzadoProductoNivel3MotivoViaMotivoIdentificador) {
        this.saleForzadoProductoNivel3MotivoViaMotivoIdentificador = saleForzadoProductoNivel3MotivoViaMotivoIdentificador;
    }	
    
    public void addSaleForzadoProductoNivel3MotivoViaMotivoIdentificador (SaleForzadoProductoNivel3 saleForzadoProductoNivel3) {
    	    getSaleForzadoProductoNivel3MotivoViaMotivoIdentificador().add(saleForzadoProductoNivel3);
    }
    



//MP-MANAGED-ADDED-AREA-BEGINNING @implementation@
//MP-MANAGED-ADDED-AREA-ENDING @implementation@

}
